package AgendaMultitudo;

import java.io.Serializable;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;

public class AgendaMultitudo implements Serializable{
	private ArrayList<Evento> eventos = new ArrayList<Evento>();
	private ArrayList<Contato> contatos = new ArrayList<Contato>();
	private Usuario usuario;
	
	
	
	public void removerContatos(String s){
		Iterator<Contato> it = contatos.iterator();
		while (it.hasNext()){
			Contato c = it.next();
			if(c.getNome().equals(s)){
				it.remove();
				
			}
		}
	}
		
	public void procuraEventos(String nome){
		for(int i = 0; i < eventos.size(); i++){
			if(nome.equals(eventos.get(i).getNome())){
				System.out.println(i + " - " + eventos.get(i).toString());
			}
		}
	}
	
	public void retornaContato(String s) {
		for( int i = 0;  i < contatos.size(); i ++){
			if(contatos.get(i).getNome().contains(s)){
				System.out.println(i + " - " + contatos.get(i).toString());
			}
		}	
	}
	
	public Evento retornaEventoPeloContato(Contato c){
		for(int i = 0; i < eventos.size(); i++){
			if(eventos.get(i).retornaContato(c)){
				return eventos.get(i);
			}
		}
		return null;
	}
	
	public ArrayList<Evento> getEventos() {
		return eventos;
	}

	public ArrayList<Contato> getContatos() {
		return contatos;
	}
	
	public  Usuario getUsuario() {
		return usuario;
	}
	
	public void carregaListaContatos(ArrayList<Contato> c){
		contatos = c;
	}
	
	public void carregaListaEventos(ArrayList<Evento> e){
		eventos = e;
	}
	
	public boolean cadastraContatos(Contato c){
		if(!contatos.contains(c)){
			contatos.add(c);
			return true;
		}
		return false;
	}
	
	public boolean cadastraEventos(Evento e){
		if(!eventos.contains(e)){
			eventos.add(e);
			return true;
		}
		return false;
	}
	
	public void cadastraUsuario(Usuario u){
			this.usuario = u;
	}
	
	public void imprimeEventos(){
		for(int i = 0; i < eventos.size(); i++){
			System.out.println(eventos.get(i));
		}

	}
	
	public void imprimeContatos(){
		for(int i = 0; i < contatos.size(); i++){
			System.out.println(contatos.get(i));
		}
	}
	
	public void imprimeUsuario(){
			System.out.println(usuario.getNome());
	}
	
	public void atualizaContatos(String s, String email, String skype, String telefone){
		Iterator<Contato> it = contatos.iterator();
		while (it.hasNext()){
			Contato c = it.next();
			if(c.getNome().equals(s)){
				c.setEmail(email);
				c.setSkype(skype);
				c.setTelefone(telefone);
			}
		}
	}
	
	public void imprimeEventosFuturos(){
		SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
		for(int i = 0; i < eventos.size(); i++){
			Date minhaData = null;
			try {
				minhaData = format.parse(eventos.get(i).getData());
			} catch (ParseException e) {
				System.out.println();
			}
			if(minhaData.after(new Date())){
				System.out.println(eventos.get(i));
			}
		}
	}
	
	public void imprimeEventosPassados(){
		SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
		for(int i = 0; i < eventos.size(); i++){
			Date minhaData = null;
			try {
				minhaData = format.parse(eventos.get(i).getData());
			} catch (ParseException e) {
				System.out.println();
			}
			if(minhaData.before(new Date())){
				System.out.println(eventos.get(i));
			}
		}
	}
	public void buscaEventos(String nome){
		for(int i = 0; i < eventos.size(); i++){
			for(int j = 0; j < eventos.get(i).getContatosDoEvento().size(); j++){
				if(eventos.get(i).getContatosDoEvento().get(j).getNome().equals(nome)){
					System.out.println(eventos.get(i));
				}
			}
		}
	}
}

